This invention relates in general to data transfer systems and more specifically to a method for controlling data transfer into and out of a circular buffer so as to prevent buffer overflow and underflow.
With the advent of Voice-Over-IP (VoIP) communication systems, specialized hardware has been developed to convert synchronous TDM streams of voice data to voice packets for transmission via IP (Internet Protocol) over a LAN (Local Area Network), and vice versa. In order to accommodate variations in transmission rates into and out of such E2T devices (Ethernet-to-TDM), software algorithms have been developed to prevent data loss where the receive and transmit data streams are not synchronized. Software solutions such as are known in the prior art contribute to system complexity and loss of speed for real time applications (such as the transmission of voice traffic).
According to the present invention, a method is provided for avoiding data loss in a data packet switch which utilizes a circular data buffer. If the data is received at a faster rate than it is read out of the buffer, then the transmitter is running at a higher frequency than the receiver and the buffer will soon overflow. Therefore, according to one aspect of the invention the data read-out pointer is adjusted by incrementing it to skip, or drop, the next sample. If the data is received at a slower rate than it is read out of the buffer, then the transmitter is running at a lower frequency than the receiver and the buffer will soon underflow. Therefore, according to another aspect of the invention, the read-out pointer is adjusted by decrementing it to repeat the previous sample. The method of controlling the buffer read-out pointer according to the present invention, is implemented in hardware thereby reducing system complexity and improving speed relative to prior art software solutions.
The method according to the present invention accommodates dynamically varying packet sizes and permits a reduction in the receive buffer size, thereby resulting in savings in buffer memory and delay and latency over prior art software implementations. Also, the method of the present invention is dynamically adjustable according to network jitter, as defined by the Real Time Protocol operations specified by the IETF""s RFC1889. The algorithm of the present invention does not add significant distortion or inject appreciable noise into the voice data stream, and allows for packets containing silence to be suppressed (i.e., the packets are not transmitted, thereby allowing the TDM data to be continually read out of the buffer at the local sample rate).